#define _CRT_SECURE_NO_WARNINGS 1
#include <stack>
#include <cstdio>
#include <queue>
#include <iostream>
#include <list>
#include <algorithm>
using namespace std;
//stack<int> n;
//int s = 0, x, y;
//int main() {
//	char ch;
//	do {
//		ch = getchar();
//		if (ch >= '0' && ch <= '9')
//		{
//			s = s * 10 + ch - '0';
//		}
//		else if (ch == '.')
//			n.push(s), s = 0;
//		else if (ch != '@') {
//			x = n.top(); n.pop(); y = n.top(); n.pop();
//			switch (ch)
//			{
//			case '+':n.push(x + y); break;
//			case '-':n.push(x - y); break;
//			case '*':n.push(x * y); break;
//			case '/':n.push(x / y); break;
//			}
//		}
//	} while (ch != '@');
//	printf("%\n", n.top());
//	return 0;
//} 

//queue<int> Q;
//int n, k;
//int main() {
//	scanf("%d%d", &n, &k);
//	for (int i = 1; i <= n; i++)
//	{
//		Q.push(i);
//	}
//	int sum = 1;
//	while (Q.size() != 1) {
//		if (sum==k)
//		{
//			printf("%d", Q.front());
//			Q.pop();
//			sum = 1;
//			continue;
//		}
//		int tmp = Q.front();
//		Q.pop();
//		Q.push(tmp);
//		sum++;
//	}
//	return 0;
//}
//struct node {
//	int pre, nxt;
//	int key;
//	node(int _key = 0, int _pre = 0, int _nxt = 0) {
//		pre = _pre; nxt = _nxt; key = _key;
//	}
//};
//
//node s[1005];
//int tot = 0;
//
//int find(int x) {
//	int now = 1;
//	while (now&&s[now].key!=x)
//	{
//		now = s[now].nxt;
//	}
//	return now;
//}
//
//void ins_back(int x, int y) {
//	int now = find(x);
//	s[++tot] = node(y, now, s[now].nxt);
//	s[s[now].nxt].pre = tot;
//	s[now].nxt = tot;
//}
//
//struct stu {
//	int pre, nxt, key;
//	stu(int _key = 0, int _pre = 0, int _nxt = 0) {
//		pre = _pre; nxt = _nxt; key = _key;
//	}
//};
//stu s[100005];
//int n, m, tot = 0, index[100005] = { 0 };
//void ins_front(int x, int y) {
//	int now = index[x];
//	s[++tot] = stu(y, s[now].pre, now);
//	s[s[now].pre].nxt = tot;
//	s[now].pre = tot;
//	index[y] = tot;
//}
//void ins_back(int x, int y) {
//	int now = index[x];
//	s[++tot] = stu(y,now, s[now].nxt);
//	s[s[now].nxt].pre = tot;
//	s[now].nxt = tot;
//	index[y] = tot;
//}
//void del(int x) {
//	int now = index[x];
//	int le = s[now].pre, rt = s[now].nxt;
//	s[le].nxt = rt;
//	s[rt].pre = le;
//	index[x] = 0;
//}
//int main() {
//	int x, k, p, now;
//	cin >> n;
//	s[0] = stu();
//	ins_back(0, 1);
//	for (int i = 2; i <= n; i++)
//	{
//		cin >> k >> p;
//		p ? ins_front(k, i) : ins_back(k, i);
//	}
//	cin >> m;
//	for (int i = 1; i <= m; i++)
//	{
//		cin >> x;
//		if (index[x])del(x);
//	}
//	now = s[0].nxt;
//	while (now) {
//		cout << s[now].key << ' ';
//		now = s[now].nxt;
//	}
//	return 0;
//}

int t, n,arr[105];
bool cmp(int a, int b) {
	return a > b;
}
int main() {
	cin >> t;
	while (t--) {
		int tmp;
		cin >> n;
		for (int i = 1; i <= n; i++)
		{
			cin >> arr[i];
		}
		sort(arr + 1, arr + 1 + n, cmp);
		for (int i = 1; i <= n; i++)
		{
			cout << arr[i] << ' ';
		}
		cout << endl;
	}
	return 0;
}
